package com.vcc.data.entity;


import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Table;
import com.vcc.data.base.entity.BaseEntity;
import lombok.*;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@EqualsAndHashCode(callSuper = true)
@Data
@Setter
@Getter
@Table(value = "vcc_usdt_recharge")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UsdtRecharge extends BaseEntity implements Serializable {

    @Column(comment = "用户Id", value = "user_id")
    private Long userId; // 用户ID

    @Column(comment = "订单号", value = "order_id")
    private String orderId; // 订单号

    @Column(comment = "备注", value = "remark")
    private String remark; // 备注

    @Column(comment = "状态", value = "status")
    private Integer status; // 状态 0 等待中 1 成功 2 失败

    @Column(comment = "币种Id", value = "currency_id")
    private Long currencyId; // 币种ID

    @Column(comment = "币种编码", value = "currency_code")
    private String currencyCode; // 币种编码

    @Column(comment = "确认次数", value = "confirm_count")
    private Integer confirmCount;

    @Column(comment = "打款地址", value = "remittance_address")
    private String remittanceAddress; // 打款地址，存储用户的USDT充值地址

    @Column(comment = "打款交易ID", value = "remittance_tx_id")
    private String remittanceTxId; // 打款交易ID，用于标识区块链上的具体交易

    //高度
    @Column(comment = "区块高度", value = "block_height")
    private String blockHeight; // 区块高度，表示交易所在的区块编号

    //收款地址
    @Column(comment = "收款地址", value = "receive_address")
    private String receiveAddress; // 收款地址，存储平台的USDT收款地址

    @Column(comment = "扩展文本-交易查出来的数据", value = "expand_text")
    private String expandText;

    @Column(comment = "打款金额", value = "remittance_amount")
    private BigDecimal remittanceAmount; // 金额，使用String类型以支持大数值的精确存储

    @Column(comment = "打款币种", value = "remittance_currency")
    private String remittanceCurrency; // 金额，使用String类型以支持大数值的精确存储

    @Column(comment = "网络类型", value = "network")
    private String network; // 网络类型，例如：TRC20, ERC20等

    @Column(comment = "请求时间", value = "request_date")
    private Date requestDate; // 请求时间，使用String类型以支持不同格式的日期存储

    @Column(comment = "确认时间", value = "confirm_date")
    private Date confirmDate; // 确认时间，表示交易在区块链上的确认次数

    @Column(comment = "操作人Id", value = "operate_id")
    private Long operateId; // 操作人ID，用于记录处理此充值请求的管理员或系统操作员的ID

}
